from rest_framework import viewsets, status
from django.shortcuts import get_object_or_404
from rest_framework.decorators import action
from rest_framework.response import Response

# 创建一个基类视图集
class BaseViewSet(viewsets.ModelViewSet):
    # 改造get_serializer方法，使其支持批量创建，核心就是如果过来的数据是list，则类的many属性为True，返回一个serializer_class
    def get_serializer(self, *args, **kwargs):
        # 获取serializer_class对象
        serializer_class = self.get_serializer_class()
        # 获取kwargs中的context对象，如果没有默认空对象
        kwargs.setdefault('context', self.get_serializer_context())
        # 安全获取kwargs中的data对象，如果没有默认空对象
        # data = self.request.data
        # if not isinstance(data, list):
        #     # 当方法为创建时
        #     if self.action == 'create':
        #         # 将当前用户的ID赋值给建立者
        #         data['creator'] =f'{self.request.user.id},{self.request.user.username}'
        #     # 当方法为整行修改或单个字段修改时
        #     if self.action in ['update', 'partial_update']:
        #         # 将当前用户的ID赋值给更新者
        #         data['updater'] =f'{self.request.user.id},{self.request.user.username}'
        return serializer_class(*args, **kwargs)
        # 循环将当前用户的ID和用户名赋值给建立者和更新者
        for i in range(len(data)):
            # 当方法为创建时
            if self.action == 'create':
                data[i]['creator'] = f'{self.request.user.id},{self.request.user.username}'
            # 当方法为整行修改或单个字段修改时
            if self.action in ['update', 'partial_update']:
                data['updater'] = f'{self.request.user.id},{self.request.user.username}'
        return serializer_class(many=True, *args, **kwargs)
        